import { fileURLToPath, URL } from 'node:url'

import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import vueDevTools from 'vite-plugin-vue-devtools'
import AutoImport from 'unplugin-auto-import/vite'
import Components from 'unplugin-vue-components/vite'
import { ElementPlusResolver } from 'unplugin-vue-components/resolvers'
import { visualizer } from 'rollup-plugin-visualizer'
import viteCompression from 'vite-plugin-compression'
// import cdn from 'vite-plugin-cdn-import'
import imageTools from 'vite-plugin-image-tools'
// https://vite.dev/config/
export default defineConfig({
  plugins: [
    vue(),
    vueDevTools(),
    AutoImport({
      resolvers: [ElementPlusResolver()]
    }),
    Components({
      resolvers: [ElementPlusResolver()]
    }),
    viteCompression({
      algorithm: 'gzip', // 压缩算法
      ext: '.gz', // 压缩文件后缀名
      threshold: 10240, // 仅压缩 >10KB 的文件（单位：字节）
      deleteOriginFile: false, // 保留原始文件，防止服务器未配置压缩时回退
      verbose: true // 控制台显示压缩日志
    }),
    imageTools({
      enableWebp: true, // 启用WebP转换
      quality: 20, // 压缩质量
      include: /\.(png|jpe?g)$/i // 显式包含JPG/PNG格式[1,3](@ref)
    })
    // cdn({
    //   modules: [
    //     // {
    //     //   name: 'vue',
    //     //   var: 'Vue',
    //     //   path: `https://cdn.bootcdn.net/ajax/libs/vue/3.5.17/vue.global.prod.min.js`
    //     // },
    //     // {
    //     //   name: 'vue-demi',
    //     //   var: 'VueDemi',
    //     //   path: 'https://cdn.jsdelivr.net/npm/vue-demi@0.14.7/lib/index.iife.min.js'
    //     // },
    //     // {
    //     //   name: 'vue-router',
    //     //   var: 'VueRouter',
    //     //   path: `https://cdn.bootcdn.net/ajax/libs/vue-router/4.5.1/vue-router.global.prod.min.js`
    //     // },
    //     // {
    //     //   name: 'pinia',
    //     //   var: 'Pinia',
    //     //   path: `https://cdn.bootcdn.net/ajax/libs/pinia/2.1.7/pinia.iife.min.js`
    //     // }
    //     // {
    //     //   name: 'element-plus',
    //     //   var: 'ElementPlus',
    //     //   path: 'https://cdn.bootcdn.net/ajax/libs/element-plus/2.10.3/index.full.min.js'
    //     // },
    //     // {
    //     //   name: 'element-plus-css',
    //     //   var: '',
    //     //   path: 'https://cdn.bootcdn.net/ajax/libs/element-plus/2.10.3/index.min.css'
    //     // }
    //     {
    //       name: 'axios',
    //       var: 'axios',
    //       path: 'https://unpkg.com/axios/dist/axios.min.js'
    //     },
    //     {
    //       name: 'vditor',
    //       var: 'Vditor',
    //       path: 'https://cdn.bootcdn.net/ajax/libs/vditor/3.11.1/index.min.js'
    //     },
    //     {
    //       name: 'vditor-css',
    //       var: '',
    //       path: 'https://cdn.bootcdn.net/ajax/libs/vditor/3.11.1/index.min.css'
    //     }
    //   ]
    // })
  ],
  build: {
    rollupOptions: {
      plugins: [
        visualizer({
          gzipSize: true,
          brotliSize: true,
          emitFile: false,
          filename: 'test.html' //分析图生成的文件名
        })
      ]
    }
  },
  resolve: {
    alias: {
      '@': fileURLToPath(new URL('./src', import.meta.url))
    }
  },
  server: {
    proxy: {
      '/api': {
        target: 'http://211.101.238.88:8079',
        changeOrigin: true,
        rewrite: (path) => path.replace(/^\/api/, '')
      }
    }
  }
})
